@layout("/common/_container.html",{title:"概览"}){
<div class="row">
    <div class="col-md-6 col-lg-3 col-xlg-3">
        <div class="card card-inverse card-info">
            <div class="box bg-info text-center">
                <h1 class="font-light text-white">20+</h1>
                <h6 class="text-white">Grocery码云访问量</h6>
            </div>
        </div>
    </div>
    <div class="col-md-6 col-lg-3 col-xlg-3">
        <div class="card card-primary card-inverse">
            <div class="box text-center">
                <h1 class="font-light text-white">20+</h1>
                <h6 class="text-white">Grocery zip下载量</h6>
            </div>
        </div>
    </div>
    <div class="col-md-6 col-lg-3 col-xlg-3">
        <div class="card card-inverse card-success">
            <div class="box text-center">
                <h1 class="font-light text-white">20+</h1>
                <h6 class="text-white">pull统计</h6>
            </div>
        </div>
    </div>
    <div class="col-md-6 col-lg-3 col-xlg-3">
        <div class="card card-inverse card-warning">
            <div class="box text-center">
                <h1 class="font-light text-white">10+</h1>
                <h6 class="text-white">push统计</h6>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div class="card card-outline-theme">
            <div class="card-header">
                <h4 class="m-b-0 text-white">项目特点</h4></div>
            <div class="card-body">
                <h3 class="card-title">全新的技术选型</h3>
                <p class="card-text">基于Spring Boot，简化了大量项目配置和maven依赖，整合了常用框架springmvc + shiro + mybatis-plus + beetl，更专注于业务开发</p>
                <h3 class="card-title">高效迭代</h3>
                <p class="card-text">每周至少一次的版本更新或迭代，快速发现并修复框架中的问题</p>
                <h3 class="card-title">简洁友好的代码风格</h3>
                <p class="card-text">Grocery始终致力于坚持做更简洁的管理系统，分包明确规范，业务按模块单独隔离，整齐的代码缩进，关键位置的代码注释</p>
                <h3 class="card-title">恰到好处的封装</h3>
                <p class="card-text">grocery-kernel模块经过多年积累，组成一套企业级的生态化组件，更适合企业级的项目开发</p>
                <h3 class="card-title">人性化的代码生成器</h3>
                <p class="card-text">可生成带有主页跳转和增删改查的通用控制器、html页面以及相关的js，还可以生成Service和Dao，只需填写一些基本参数，即可快速生成新业务模板代码</p>
                <a href="javascript:void(0)" class="btn btn-info">点击查看项目主页</a>
            </div>
        </div>
    </div>

    <div class="col-md-12">
        <div class="card card-outline-theme">
            <div class="card-header">
                <h4 class="m-b-0 text-white">Grocery历史版本</h4></div>
            <div class="card-body">
                <div class="row">
                    <div class="col-lg-3 col-md-6 img-responsive">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery v5.1（最新版）</h4>
                                <p class="card-text">Grocery核心模块公用，打造更加强大的企业级核心模块，回归了单模块应用！</p>
                                <a href="https://gitee.com/zx_l/grocery-module" target="_blank" class="btn btn-info">点击前往</a>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6 img-responsive">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery v4.2</h4>
                                <p class="card-text">Grocery-admin集成rest api服务，升级spring boot到2.0，极大地简化前端页面体积！</p>
                                <a href="https://gitee.com/zx_l/grocery-module/tree/v4.2/" target="_blank" class="btn btn-info">点击前往</a>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery v3.3</h4>
                                <p class="card-text">整个项目模块化，核心包抽离，集成jwt，增加rest api鉴权机制，并引入flowable 6.2.0！</p>
                                <a href="https://gitee.com/zx_l/grocery-module/tree/v3.3/" target="_blank" class="btn btn-info">点击前往</a>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery v2.4</h4>
                                <p class="card-text">基于spring boot全面升级，成为国内首批使用spring boot的开源系统！更专注业务开发！</p>
                                <a href="https://gitee.com/zx_l/grocery-module/tree/v2.4/" target="_blank" class="btn btn-info">点击前往</a>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery v1.0</h4>
                                <p class="card-text">Grocery开山之作，java bean方式配置，零spring xml配置！打开新一代管理系统大门！</p>
                                <a href="https://gitee.com/zx_l/grocery-module/tree/v1.0/" target="_blank" class="btn btn-info">点击前往</a>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery SSO</h4>
                                <p class="card-text">Grocery 5.0，单点登录版本，集成自研单点登录框架！</p>
                                <a href="https://gitee.com/zx_l/grocery-module/tree/sso/" target="_blank" class="btn btn-info">点击前往</a>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery ORACLE</h4>
                                <p class="card-text">尚未集成调试，敬请期待</p>
                            </div>
                        </div>
                    </div>
                    <div class="col-lg-3 col-md-6">
                        <div class="card bg-light-extra">
                            <div class="card-body">
                                <h4 class="card-title">Grocery MSSQL</h4>
                                <p class="card-text">尚未集成调试，敬请期待</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
@}
<!--配置：-->
<!--颜色：默认是（0，0，0），格式是（R,G,B）-->
<!--透明度：（0-1），默认0.5-->
<!--线段的数量：默认0.5-->
<!--Z轴：默认-1-->
<!--<script type="text/javascript" color="0,0,255" opacity='0.8' zIndex="0" count="99" src="//cdn.bootcss.com/canvas-nest.js/1.0.1/canvas-nest.min.js"></script>-->
<script zIndex="0">
    !function() { //   添加光线粒子效应 粒子与线条自动游离连接，当粒子运动碰撞到边缘时处理，被弹回相反方向
        function A(a, b, c) {
            return a.getAttribute(b) || c
        }
        function F(a) {
            return document.getElementsByTagName(a);
        }
        function D() {
            var c = F("script"),
            a = c.length,
            b = c[a - 1];
            return {
                l: a,
                z: A(b, "zIndex", -1),
                o: A(b, "opacity", 0.5),
                c: A(b, "color", "0,0,0"),
                n: A(b, "count", 199)
            }
        }
        function E() {
            x = i.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
            B = i.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
        }
        function M() {
            J.clearRect(0, 0, x, B);
            var c = [I].concat(v);
            var b, d, a, g, e, f;
            v.forEach(function(h) {
            h.x += h.xa,
            h.y += h.ya,
            h.xa *= h.x > x || h.x < 0 ? -1 : 1,
            h.ya *= h.y > B || h.y < 0 ? -1 : 1,
            J.fillRect(h.x - 0.5, h.y - 0.5, 1, 1);
            for (d = 0; d < c.length; d++) {
                b = c[d];
                if (h !== b && null !== b.x && null !== b.y) {
                    g = h.x - b.x;
                    e = h.y - b.y;
                    f = g * g + e * e;
                    f < b.max && (b === I && f >= b.max / 2 && (h.x -= 0.03 * g, h.y -= 0.03 * e), a = (b.max - f) / b.max, J.beginPath(), J.lineWidth = a / 2, J.strokeStyle = "rgba(" + w.c + "," + (a + 0.2) + ")", J.moveTo(h.x, h.y), J.lineTo(b.x, b.y), J.stroke())
                }
            }
            c.splice(c.indexOf(h), 1);
        }),
        C(M);
    }
    var i = document.createElement("canvas"),
    w = D(),
    L = "c_n" + w.l, //c_n2
    J = i.getContext("2d"),
    x,
    B,
    C = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
    function(a) {
        window.setTimeout(a, 1000 / 45)
    },
    N = Math.random,
    I = {
    x: null,
    y: null,
    max: 20000
    };
    i.id = L;
    i.style.cssText = "position:fixed;top:0;left:0;z-index:" + w.z + ";opacity:" + w.o;
    F("body")[0].appendChild(i);
    E();
    window.onresize = E;
    window.onmousemove = function(a) {
        a = a || window.event,
        I.x = a.clientX,
        I.y = a.clientY
    };
    window.onmouseout = function() {
        I.x = null,
        I.y = null
    };
    for (var v = [], z = 0; w.n > z; z++) {
        var G = N() * x,
        H = N() * B,
        y = 2 * N() - 1,
        K = 2 * N() - 1;
        v.push({
        x: G,
        y: H,
        xa: y,
        ya: K,
        max: 6000
    });
    }
    setTimeout(function() {
        M()
    }, 100)
    } ();
</script>
